package com.sg.dto.biz.bff.common;

import io.swagger.annotations.ApiModelProperty;
import lombok.Data;

import java.io.Serializable;
import java.util.Date;
import java.util.Objects;

/**
 * @desc BffAchievementDockingDto
 * @使用场景
 */
@Data
public class BffAchievementDockingDto implements Serializable {

    /**
     * 关联成果ID
     */
    @ApiModelProperty("关联成果ID")
    private String achievementId;

    /**
     * 成果名称
     */
    @ApiModelProperty("成果名称")
    private String achievementName;

    /**
     * 成果类别名称
     */
    @ApiModelProperty("成果类别名称")
    private String achievementCategoryName;

    /**
     * 成果等级名称
     */
    @ApiModelProperty("成果等级名称")
    private String achievementGradeName;

    /**
     * 版权归属别名
     */
    @ApiModelProperty("版权归属别名")
    private String belongName;

    /**
     * 版权归属对象名称
     */
    @ApiModelProperty("版权归属对象名称")
    private String copyrightObjectName;

    /**
     * 授予时间
     */
    @ApiModelProperty("授予时间")
    private Date awardedTime;

    /**
     * 有效期结束时间
     */
    @ApiModelProperty("有效期结束时间")
    private Date validEndTime;

    /**
     * 是否标志性成果 TRUE:是 FALSE:否
     */
    @ApiModelProperty("是否标志性成果")
    private String isSymbolicAchievements;
    /**
     * 成果类型ID
     */
    @ApiModelProperty("成果类型ID")
    private String achievementTypeId;

    /**
     * 成果类型编号
     */
    @ApiModelProperty("成果类型编号")
    private String achievementTypeNumber;

    /**
     * 成果类别ID
     */
    @ApiModelProperty("成果类别ID")
    private String achievementCategoryId;

    /**
     * 成果类别编号
     */
    @ApiModelProperty("成果类别编号")
    private String achievementCategoryNumber;

    /**
     * 成果等级ID
     */
    @ApiModelProperty("成果等级ID")
    private String achievementGradeId;

    /**
     * 成果等级编号
     */
    @ApiModelProperty("成果等级编号")
    private String achievementGradeNumber;
    /**
     * 对接成果关系ID
     */
    @ApiModelProperty("对接成果关系ID")
    private String achievementDockingId;
    /**
     * 成果业务等级ID
     */
    @ApiModelProperty("成果业务等级ID")
    private String achievementBusinessGradeId;

    /**
     * 成果业务等级编号
     */
    @ApiModelProperty("成果业务等级编号")
    private String achievementBusinessGradeNumber;

    /**
     * 成果业务等级名称
     */
    @ApiModelProperty("成果业务等级名称")
    private String achievementBusinessGradeName;
    /**
     * 成果类型名称
     */
    @ApiModelProperty("成果类型名称")
    private String achievementTypeName;
    /**
     * 业绩责任部门名称
     */
    @ApiModelProperty("业绩责任部门名称")
    private String dutyDeptName;
    /**
     * 任务名称
     */
    @ApiModelProperty("任务名称")
    private String taskName;

    /**
     * 归属目标内容ID
     */
    @ApiModelProperty("归属目标内容ID")
    private String targetCycleContentId;
    /**
     * 成果编号
     */
    @ApiModelProperty("成果编号")
    private String achievementNumber;

    /**
     * 授予单位
     */
    @ApiModelProperty("授予单位")
    private String awardedUnit;

    /**
     * 相关文号
     */
    @ApiModelProperty("相关文号")
    private String relatedDocument;

    /**
     * 业绩责任部门ID
     */
    @ApiModelProperty("业绩责任部门ID")
    private String dutyDeptId;

    /**
     * 部门简称
     */
    @ApiModelProperty("部门简称")
    private String deptShortName;
    /**
     * 是否标志性成果 TRUE:是 FALSE:否
     */
    @ApiModelProperty("是否标志性成果")
    private String isSymbolicAchievement;

    /**
     * 版权归属对象表类型 ORGANIZATION:组织 DEPARTMENT:部门 PERSONAL:个人
     */
    @ApiModelProperty("版权归属对象表类型")
    private String copyrightObjectTypeCode;

    /**
     * 版权归属对象ID
     */
    @ApiModelProperty("版权归属对象ID")
    private String copyrightObjectId;
    /**
     * 成果介绍
     */
    @ApiModelProperty("成果介绍")
    private String achievementDesc;

    @Override
    public boolean equals(Object o) {
        if (this == o) return true;
        if (o == null || getClass() != o.getClass()) return false;
        if (!super.equals(o)) return false;
        BffAchievementDockingDto that = (BffAchievementDockingDto) o;
        return achievementId == that.achievementId && achievementName == that.achievementName && achievementCategoryName == that.achievementCategoryName && achievementGradeName == that.achievementGradeName && belongName == that.belongName && copyrightObjectName == that.copyrightObjectName && awardedTime == that.awardedTime && validEndTime == that.validEndTime && isSymbolicAchievements == that.isSymbolicAchievements && achievementTypeId == that.achievementTypeId && achievementTypeNumber == that.achievementTypeNumber && achievementCategoryId == that.achievementCategoryId && achievementCategoryNumber == that.achievementCategoryNumber && achievementGradeId == that.achievementGradeId && achievementGradeNumber == that.achievementGradeNumber && achievementDockingId == that.achievementDockingId && achievementBusinessGradeId == that.achievementBusinessGradeId && achievementBusinessGradeNumber == that.achievementBusinessGradeNumber && achievementBusinessGradeName == that.achievementBusinessGradeName && achievementTypeName == that.achievementTypeName && dutyDeptName == that.dutyDeptName && taskName == that.taskName && targetCycleContentId == that.targetCycleContentId && achievementNumber == that.achievementNumber && awardedUnit == that.awardedUnit && relatedDocument == that.relatedDocument && dutyDeptId == that.dutyDeptId && deptShortName == that.deptShortName && isSymbolicAchievement == that.isSymbolicAchievement && copyrightObjectTypeCode == that.copyrightObjectTypeCode && copyrightObjectId == that.copyrightObjectId && achievementDesc == that.achievementDesc;
    }

    @Override
    public int hashCode() {
        return Objects.hash(super.hashCode(), achievementId, achievementName, achievementCategoryName, achievementGradeName, belongName, copyrightObjectName, awardedTime, validEndTime, isSymbolicAchievements, achievementTypeId, achievementTypeNumber, achievementCategoryId, achievementCategoryNumber, achievementGradeId, achievementGradeNumber, achievementDockingId, achievementBusinessGradeId, achievementBusinessGradeNumber, achievementBusinessGradeName, achievementTypeName, dutyDeptName, taskName, targetCycleContentId, achievementNumber, awardedUnit, relatedDocument, dutyDeptId, deptShortName, isSymbolicAchievement, copyrightObjectTypeCode, copyrightObjectId, achievementDesc);
    }

}
